package codebreaker.cliente.conexao;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Iterator;

/**
 * Administra a lista de servidores, e carrega de arquivo.
 *
 * @author Rodrigo
 */
public class ConexaoServidor implements Iterable {
    
    /* lista de servidores */
    private java.util.Vector servidores;
    
    /**
     * Cria uma nova instância de ConexaoServidor
     * com a lista de servidores vazia
     */
    public ConexaoServidor() {
	servidores = new java.util.Vector();
    }
    
    /**
     * Cria uma nova instância de ConexaoServidor
     * com a lista de servidores carregada de arquivo
     * @param arquivo Arquivo de texto
     */
    public ConexaoServidor(String arquivo) {
	carregar(arquivo);
    }
    
    /**
     * Retorna um servidor da lista
     * @param indice Indice do servidor na lista
     */
    public Servidor get(int indice) {
	return (Servidor) servidores.elementAt(indice);
    }
    
    public Iterator<Object> iterator() {
	return servidores.iterator();
    }
    
    /**
     * Carrega lista de arquivo
     * @param arquivo Nome do arquivo
     */
    public void carregar(String arquivo) {
	try {
	    
	    /* esvazia lista */
	    if (servidores != null)
		servidores.clear();
	    else
		servidores = new java.util.Vector();
	    
	    /* abre arquivo */
	    BufferedReader input = new BufferedReader(new FileReader(arquivo));
	    
	    while (input.ready()) {
		String parametros[] = input.readLine().split(":");
		
		if (parametros.length == 2)
		    servidores.add(new Servidor(parametros[0].trim(), parametros[1].trim()));
	    }
	} catch (FileNotFoundException ex) {
	    ex.printStackTrace();
	} catch (UnknownHostException ex) {
	    ex.printStackTrace();
	} catch (IOException ex) {
	    ex.printStackTrace();
	}
    }
    
    public java.util.Vector getServidores() {
	return servidores;
    }
}
